/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package MPPersistencia;


import Concepto.Curso;
import Concepto.Estudiante;
import Utilidades.ManejadorBaseDatos;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;


/**
 *
 * @author USUARIO
 */
public class MPEstudiante {
static Connection con;
static ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();

public static Estudiante consultarEstudiante(int codest) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    String codest1=codest +"";
      if (codest1 == null) {
          throw new SQLException("No hay elemento clave de la clase Estudiante");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Estudiante estudiante = null;
     try {
         pst = con.prepareStatement("select * from Estudiante where codEstudiante = ?");
         pst.setInt(1, codest);

         rs = pst.executeQuery();
         while(rs.next()) {

             estudiante = Estudiante.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return estudiante;
    }
}

public static Curso consultarCursoEstudiante(int codest, String anocurso) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    String codest1=codest +"";
      if (codest1 == null) {
          throw new SQLException("No hay elemento clave de la clase Estudiante");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Curso curso = null;
     try {
         pst = con.prepareStatement("select c.* from Curso c, Matricula m, Estudiante e where  m.var_id_estudiante=e.codEstudiante and c.codCurso = m.var_id_curso and e.codEstudiante='" + codest+ "' and YEAR(m.var_fecha_matricula)='" + anocurso+ "' ");

         pst.setInt(1, codest);

         rs = pst.executeQuery();
         while(rs.next()) {

             curso = Curso.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return curso;
    }
}
public static boolean existeestudiante(int codest) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
      String codest1=codest +"";
      if (codest1 == null) {
          throw new SQLException("No hay elemento clave de la clase Estudiante");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
         boolean estudiante = false;
     try {
         pst = con.prepareStatement("select * from Estudiante where codEstudiante = ?");
         pst.setInt(1, codest);

         rs = pst.executeQuery();
         while(rs.next()) {

             estudiante = true;
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return estudiante;
    }
}

public static void registrarEstudiante(Estudiante estudiante) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
     if (con == null ) {
          throw new SQLException("no hay conexion" );
     }
     PreparedStatement pst = null;//hacer nula la consulata.....
     try {
          pst = con.prepareStatement("Insert Into Estudiante values(?,?,?,?,?,?,?,?)");
          pst.setInt(1,estudiante.getVar_codigo_estudiante());
          pst.setInt(2, estudiante.getVar_identificacion_estudiante());
          pst.setString(3,estudiante.getVar_nombre_estudiante());
         
       
          pst.executeUpdate();
    }finally {
        if (pst != null) {
             pst.close();
        }
   }
}
public static boolean Actualizarestudiante (Estudiante estudiante, int codest) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    if ( consultarEstudiante(codest) == null) {
           throw new SQLException ("estudiante no registrado" );
       }
       PreparedStatement pst = null;
       boolean res = false;
       try {
         pst = con.prepareStatement("Update Estudiante set identificacion = ?, codigo = ? , apellidos = ?,  nombres = ?, direccion = ?, correo = ?, telefono = ?,IdenAcudiente=? where codEstudiante = ?" ) ;
        
     
          pst.setInt(8 , codest);
         int r = pst.executeUpdate();
       if (r != 0) {
          res = true;
       }
       } finally {
          if (pst != null) {
            pst.close();
          }
       }
         return res;
 }
public static boolean EliminarEstudiante(int codest) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    if (consultarEstudiante(codest) == null) {
        throw new SQLException("No hay Estudiante para eliminar");
     }
     PreparedStatement pst = null;
     boolean res = false;
     try {
        pst = con.prepareStatement("delete from Estudiante where codEstudiante = ?");
        pst.setInt(1, codest);
        int r = pst.executeUpdate();
        if (r != 0) {
           res = true;
        }
     } finally {
        if (pst != null) {
           pst.close();
        }
     }
     return res;
}
  //metodo para listar asociados
public static List<Estudiante> listarEstudiante(int codcurs,String anocurso) throws SQLException, Exception {
      mbd.conectar();
        con=mbd.getConexion();
        ResultSet rs = null;
     PreparedStatement pst = null;
     List<Estudiante> listaestudiante = new LinkedList();
     try {
        pst = con.prepareStatement("select * from  Estudiante e, Curso c, Matricula m  where m.var_id_estudiante=e.codEstudiante and c.codCurso = m.var_id_curso and codCurso= '" + codcurs+ "' and  year(var_fecha_matricula)='"+anocurso+"'");
        rs = pst.executeQuery();
        while(rs.next()) {
           listaestudiante.add(Estudiante.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
  }
    return listaestudiante;
}

}
